package array

// 自己的理解做的
func RemoveElementByMyself(nums []int, val int) int {

	n := len(nums)
	l := 0 // 等于val的个数

	left := 0
	right := n - 1

	for left <= right {
		for ; left <= right; left++ {
			if nums[left] == val {
				l++
				for ; left < right; right-- {
					if nums[right] == val {
						l++
					} else {
						nums[left] = nums[right]
						right--
						break
					}
				}
			}
		}
	}

	return n - l
}

// leetcode官方答案
func RemoveElement(nums []int, val int) int {
	left, right := 0, len(nums)
	for left < right {
		if nums[left] == val {
			// 此时并不做left++就是为了判断nums[right]是否为val
			nums[left] = nums[right-1]
			right--
		} else {
			left++
		}
	}
	return left
}
